技术开发 频道

VS Team Edition在其它单元中的测试

  【IT168 专稿】Microsoft Visual Studio Team System集成了多种功能,这些功能用于创建高质量代码。其中一项功能用于实现单元编码测试。并在Microsoft ASP.NET内部运行测试代码。在本文中,首先从测试驱动开发技术开始讲解,因为这是敏捷开发人员所提倡的重点。

上一篇:使用VS Team Edition进行单元测试
 
  ·预期的错误

  在某些测试中,开发人员可能需要提供一些错误条件。所以,可以标注测试方法为ExpectedException属性,并设定为预期的异常类型。在如下示例中,即使抛出DivideByZeroException异常,测试也能通过。

[TestClass]
public class UnitTests
{
     [TestMethod]
     [ExpectedException(
typeof(DivideByZeroException))]
    
public void DivideTest()
    {
        
int x = 1; int y = 0;
        MyUtils.Calc.Divide(x, y);
    }
}

  ·数据驱动测试

  为了彻底测试,并保证代码的完全覆盖率,尤其是测试所有边缘条件,有时候需要使用不同的输入参数和对同一段代码进行反复测试,以及针对不同的返回值的测试。除了编写每一种不同情况的测试代码之外,测试框架还能从数据库获取不同的测试参数。这种方法称为数据驱动测试。采用如下SQL脚本对建立名为TestData的Microsoft SQL Server Express Edition数据库,之后再将其清除。TestData数据库包含用于数据驱动测试的数据。

-- create.sql
USE master
GO
DROP DATABASE TestData
GO
CREATE DATABASE TestData
GO
use TestData
GO
CREATE TABLE CalcTestData
(
  x
int NOT NULL,
  y
int NOT NULL,
  expected
int NOT NULL,
  shouldpass
bit NOT NULL
)
GO

INSERT INTO CalcTestData (x, y, expected, shouldpass)
  
values (1, 1, 2, 1)
INSERT INTO CalcTestData (x, y, expected, shouldpass)
  
values (1, 2, 1, 0)
GO

-- destroy.sql
USE master
GO
DROP DATABASE TestData
GO

  同样使用如下命令脚本执行上述SQL脚本。这些命令脚本从测试运行配置的“Setup And Cleanup Scripts”选项卡引用,所以它们可以在测试运行之前/后执行。

rem create.cmd
sqlcmd
-S .\SQLExpress -i create.sql

rem destroy.cmd
sqlcmd
-S .\SQLExpress -i destroy.sql

 

0
相关文章